package cn.foolishbird.basic.lock;

import java.util.concurrent.locks.Lock;

/**
 * 业务代码 锁管理器
 * 业务代码使用锁的时候，使用，方便本地锁，分布式锁相互切换
 *
 * @author Eric
 * @version 1.0
 * @date 2019-12-20
 */
public interface LockManager extends CleanLock {

    /**
     * 获取一个 锁对象
     *
     * @param lockKey
     * @return java.util.concurrent.locks.Lock
     * @throws
     * @author Eric
     * @date 2019/12/20
     **/
    Lock getLock(String lockKey);

    /**
     * @param lockKey  锁key
     * @param executor 回调接口执行器
     * @return void
     * @throws
     * @author Eric
     * @date 2019/12/21
     **/
    void lockExecute(String lockKey, LockExecutor executor) throws Exception;


    void lockExecute(String lockKey, LockExecutor executor, boolean clean) throws Exception;

}
